এখানে আমরা CouchDB এবং Java (Ektorp API) ব্যবহার করে একটি বাস্তব উদাহরণ এবং ডেমো তৈরি করব। এই উদাহরণে, আমরা CouchDB ডেটাবেসে User ডকুমেন্ট তৈরি, রিড, আপডেট এবং ডিলিট অপারেশন প্রদর্শন করব। এই প্রকল্পটি Java এর Ektorp লাইব্রেরি ব্যবহার করে CouchDB তে ডেটা পরিচালনা করবে।
Maven Dependency: প্রথমে আমাদের pom.xml
ফাইলে Ektorp এর ডিপেনডেন্সি যোগ করতে হবে।
<dependency>
<groupId>org.ektorp</groupId>
<artifactId>ektorp</artifactId>
<version>1.4</version>
</dependency>
এটি CouchDB সার্ভারের সঙ্গে Java অ্যাপ্লিকেশনটির যোগাযোগ স্থাপন করতে ব্যবহার করা হবে। CouchDB এর URL, ডেটাবেসের নাম, এবং HTTP client কনফিগার করতে হবে।
import org.ektorp.CouchDbConnector;
import org.ektorp.impl.StdCouchDbConnector;
import org.ektorp.http.HttpClient;
import org.ektorp.http.StdHttpClient;
public class CouchDbConfig {
public static CouchDbConnector connector;
// CouchDB কনফিগারেশন
public static void setUpCouchDB() {
String couchDbUrl = "http://localhost:5984"; // CouchDB সার্ভারের URL
String databaseName = "user_database"; // CouchDB ডেটাবেসের নাম
// HTTP client কনফিগারেশন
HttpClient httpClient = new StdHttpClient.Builder()
.url(couchDbUrl)
.username("admin") // আপনার CouchDB ইউজারনেম
.password("password") // আপনার CouchDB পাসওয়ার্ড
.build();
// CouchDbConnector তৈরি
connector = new StdCouchDbConnector(databaseName, httpClient);
}
}
এখানে, StdHttpClient
এবং StdCouchDbConnector
ব্যবহার করে CouchDB সার্ভারের URL, ইউজারনেম, এবং পাসওয়ার্ড কনফিগার করা হচ্ছে। এর মাধ্যমে CouchDB সার্ভারের সঙ্গে যোগাযোগ স্থাপন করা হবে।
এখন আমরা CouchDB তে User ডকুমেন্টের জন্য একটি Java ক্লাস তৈরি করব। এই ক্লাসটি CouchDbDocument
থেকে উত্তরাধিকারসূত্রে পাবে এবং ডেটার কাঠামো নির্ধারণ করবে।
import org.ektorp.support.CouchDbDocument;
public class User extends CouchDbDocument {
private String name;
private String email;
// Getter এবং Setter মেথড
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
এখানে, User ক্লাসে name
এবং email
ফিল্ড রয়েছে যা CouchDB ডকুমেন্টের ক্ষেত্র হিসেবে কাজ করবে।
এখন আমরা CouchDB তে একটি নতুন User ডকুমেন্ট যোগ করার জন্য একটি মেথড তৈরি করব।
public class CouchDbService {
// User তৈরি করার মেথড
public static void addUser(String name, String email) {
User user = new User();
user.setName(name);
user.setEmail(email);
// CouchDB তে ডকুমেন্ট যোগ করা
CouchDbConfig.connector.create(user);
System.out.println("User added: " + user.getName());
}
}
এখানে, addUser
মেথডটি একটি নতুন User ডকুমেন্ট তৈরি করে এবং CouchDbConfig.connector.create(user)
ব্যবহার করে CouchDB ডেটাবেসে যোগ করে।
এখন আমরা একটি নির্দিষ্ট User ডকুমেন্ট _id
দিয়ে ডেটাবেস থেকে রিড করার জন্য একটি মেথড তৈরি করব।
public class CouchDbService {
// User রিড করার মেথড
public static User getUserById(String userId) {
User user = CouchDbConfig.connector.get(User.class, userId);
return user;
}
}
এখানে, getUserById
মেথডটি নির্দিষ্ট _id দিয়ে CouchDB থেকে ডকুমেন্ট রিড করবে এবং তা User
অবজেক্ট হিসেবে ফেরত দেবে।
CouchDB তে বিদ্যমান User ডকুমেন্ট আপডেট করার জন্য একটি মেথড তৈরি করব।
public class CouchDbService {
// User আপডেট করার মেথড
public static void updateUser(String userId, String newEmail) {
User user = CouchDbConfig.connector.get(User.class, userId); // ডকুমেন্ট রিড করা
user.setEmail(newEmail); // ডেটার আপডেট
CouchDbConfig.connector.update(user); // CouchDB তে আপডেট করা
System.out.println("User updated: " + user.getName());
}
}
এখানে, updateUser
মেথডটি একটি নির্দিষ্ট User ডকুমেন্টের email ফিল্ড আপডেট করবে এবং তা CouchDB তে আপডেট করবে।
CouchDB তে User ডকুমেন্ট মুছে ফেলতে একটি মেথড তৈরি করা হলো:
public class CouchDbService {
// User ডিলিট করার মেথড
public static void deleteUser(String userId) {
User user = CouchDbConfig.connector.get(User.class, userId); // ডকুমেন্ট রিড করা
CouchDbConfig.connector.delete(user); // CouchDB থেকে ডকুমেন্ট মুছে ফেলা
System.out.println("User deleted: " + user.getName());
}
}
এখানে, deleteUser
মেথডটি একটি নির্দিষ্ট User ডকুমেন্ট মুছে ফেলবে।
এখন, আমরা একটি main মেথড তৈরি করব, যা CouchDB তে User ডকুমেন্ট তৈরি, রিড, আপডেট এবং ডিলিট অপারেশনগুলি কার্যকর করবে।
public class Main {
public static void main(String[] args) {
// CouchDB কনফিগারেশন সেটআপ
CouchDbConfig.setUpCouchDB();
// নতুন User তৈরি করা
CouchDbService.addUser("John Doe", "john.doe@example.com");
// User রিড করা
User user = CouchDbService.getUserById("unique_id"); // এখানে 'unique_id' আপনার সঠিক ID হবে
System.out.println("User fetched: " + user.getName());
// User আপডেট করা
CouchDbService.updateUser("unique_id", "john.newemail@example.com");
// User ডিলিট করা
CouchDbService.deleteUser("unique_id");
}
}
এখানে, main মেথডটি CouchDbConfig এবং CouchDbService ক্লাসের মেথডগুলো ব্যবহার করে CouchDB তে User ডকুমেন্ট তৈরি, রিড, আপডেট এবং ডিলিট করবে।
এই উদাহরণটি CouchDB এবং Java (Ektorp API) ব্যবহার করে CRUD অপারেশন করার প্রক্রিয়া প্রদর্শন করে। Ektorp Java ক্লায়েন্ট CouchDB এর সাথে যোগাযোগ স্থাপন করে এবং ডেটা তৈরি, পড়া, আপডেট এবং মুছে ফেলতে সাহায্য করে। এটি CouchDB এর সুবিধা এবং Java এর কার্যকারিতা একত্রে ব্যবহার করে একটি শক্তিশালী ডিস্ট্রিবিউটেড ডেটাবেস সিস্টেম তৈরি করে।
CouchDB একটি ডকুমেন্ট-ভিত্তিক ডাটাবেস, যা JSON ফরম্যাটে ডেটা সংরক্ষণ করে এবং RESTful API ব্যবহার করে ডেটাবেসের সাথে যোগাযোগ করা যায়। ডকুমেন্ট তৈরি, আপডেট, রিড, এবং ডিলিট করার জন্য Python ব্যবহার করলে খুব সহজে CouchDB এর সাথে কাজ করা যায়। নিচে CouchDB তে ডকুমেন্ট তৈরি এবং ডেটা হ্যান্ডলিংয়ের উদাহরণ দেয়া হলো।
ডকুমেন্ট তৈরি করার জন্য আপনি Python CouchDB লাইব্রেরি ব্যবহার করতে পারেন। এখানে একটি নতুন ডকুমেন্ট তৈরি করা হবে এবং সেটি CouchDB তে সংরক্ষণ করা হবে।
import couchdb
# CouchDB সার্ভারের URL
couch = couchdb.Server('http://localhost:5984/')
# ডেটাবেসের নাম
db_name = 'user_db'
# ডেটাবেসের সাথে সংযোগ করা
if db_name in couch:
db = couch[db_name]
else:
db = couch.create(db_name)
# ডকুমেন্ট তৈরি
doc = {
'name': 'Alice',
'email': 'alice@example.com',
'age': 30,
'type': 'user'
}
# ডকুমেন্ট সেভ করা
doc_id, doc_rev = db.save(doc)
# ফলাফল প্রদর্শন
print(f"Document created with ID: {doc_id} and Revision: {doc_rev}")
এখানে:
db.save(doc)
ফাংশনটি ডকুমেন্টটি ডেটাবেসে সেভ করবে।doc_id
এবং doc_rev
হল নতুন ডকুমেন্টের ID এবং Revision।ডকুমেন্ট রিড করার জন্য তার _id ব্যবহার করতে হবে। নিচে উদাহরণ দেয়া হলো কিভাবে একটি ডকুমেন্ট রিড করা যায়।
# ডকুমেন্ট রিড করা (ডকুমেন্টের ID জানলে)
doc_id = 'document_id_here' # এখানে ডকুমেন্টের ID দিন
doc = db[doc_id]
# ডকুমেন্টের তথ্য প্রদর্শন
print(f"Document Retrieved: {doc}")
এখানে:
db[doc_id]
ব্যবহার করে ডেটাবেস থেকে নির্দিষ্ট doc_id এর ডকুমেন্ট রিড করা হয়।CouchDB তে ডকুমেন্ট আপডেট করতে হলে প্রথমে ডকুমেন্টটি রিড করতে হবে এবং তারপর তার _rev ফিল্ড ব্যবহার করে আপডেট করতে হবে।
# ডকুমেন্ট রিড করা
doc = db[doc_id]
# ডকুমেন্টের তথ্য আপডেট করা
doc['age'] = 31 # উদাহরণস্বরূপ, বয়স আপডেট করা
# আপডেট করা ডকুমেন্ট সেভ করা
db.save(doc)
# ফলাফল প্রদর্শন
print(f"Document updated with new age: {doc['age']}")
এখানে:
db.save(doc)
ডকুমেন্ট আপডেট করার জন্য ব্যবহার করা হয়।ডকুমেন্ট মুছে ফেলার জন্য, আপনাকে _id এবং _rev ফিল্ডের সাহায্যে ডকুমেন্টটি ডিলিট করতে হবে।
# ডকুমেন্ট রিড করা
doc = db[doc_id]
# ডকুমেন্ট ডিলিট করা
db.delete(doc)
# ফলাফল প্রদর্শন
print(f"Document with ID: {doc_id} deleted")
এখানে:
db.delete(doc)
ডকুমেন্টটিকে ডেটাবেস থেকে মুছে ফেলবে।একাধিক ডকুমেন্ট একসাথে ইনসার্ট করার জন্য bulk_save() ফাংশন ব্যবহার করা হয়।
# একাধিক ডকুমেন্ট তৈরি করা
docs = [
{'name': 'Bob', 'email': 'bob@example.com', 'age': 25, 'type': 'user'},
{'name': 'Charlie', 'email': 'charlie@example.com', 'age': 28, 'type': 'user'}
]
# ব্যাচ ইনসার্ট
db.bulk_save(docs)
# ফলাফল প্রদর্শন
print("Batch documents saved")
এখানে:
db.bulk_save(docs)
একসাথে একাধিক ডকুমেন্ট ইনসার্ট করতে ব্যবহৃত হয়।View তৈরি করে আপনি ডেটা কাস্টম কুয়েরি করতে পারেন। নিচে একটি উদাহরণ দেয়া হলো যেখানে আমরা MapReduce ফাংশন ব্যবহার করে name এর ভিত্তিতে ডেটা কুয়েরি করছি।
{
"_id": "_design/user_view",
"views": {
"by_name": {
"map": "function(doc) { emit(doc.name, 1); }",
"reduce": "_sum"
}
}
}
এখানে:
# View থেকে ডেটা কুয়েরি করা
view = db.view('user_view/by_name') # 'user_view' হল Design Document নাম
# ফলাফল প্রদর্শন
for row in view:
print(f"Name: {row.key}, Count: {row.value}")
এখানে:
db.view('user_view/by_name')
কোডটি Map এবং Reduce ফাংশনের সাহায্যে ডেটাবেস থেকে কুয়েরি করবে এবং ফলস্বরূপ name এবং তাদের গুনফল প্রিন্ট করবে।CouchDB তে ডকুমেন্ট তৈরি এবং ডেটা হ্যান্ডলিং খুবই সহজ এবং কার্যকরী। Python এর মাধ্যমে আপনি খুব সহজেই ডেটা ইনসার্ট, রিড, আপডেট, ডিলিট, ব্যাচ ইনসার্ট এবং কাস্টম কুয়েরি তৈরি করতে পারেন। এর মাধ্যমে ডিস্ট্রিবিউটেড ডাটাবেসে কাজ করার জন্য একটি শক্তিশালী এবং নমনীয় সমাধান পাওয়া যায়।
CouchDB এবং PouchDB হল দুইটি জনপ্রিয় NoSQL ডাটাবেস সিস্টেম, যা ডিস্ট্রিবিউটেড ডেটা স্টোরেজ এবং মোবাইল অ্যাপ্লিকেশন ডেভেলপমেন্টে সহায়ক। CouchDB একটি server-side ডাটাবেস, যা ডেটা স্টোর করতে এবং পরিচালনা করতে ব্যবহৃত হয়, এবং PouchDB হল একটি client-side ডাটাবেস যা CouchDB এর সাথে সিঙ্ক্রোনাইজ করতে সক্ষম এবং মোবাইল অ্যাপ্লিকেশনগুলিতে ব্যবহার করা হয়।
PouchDB CouchDB এর সাথে পুরোপুরি সামঞ্জস্যপূর্ণ, অর্থাৎ এটি offline-first অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য আদর্শ। এই টিউটোরিয়ালে আমরা CouchDB এবং PouchDB ব্যবহার করে একটি মোবাইল অ্যাপ্লিকেশন তৈরি করার প্রক্রিয়া সম্পর্কে বিস্তারিত আলোচনা করব।
CouchDB এবং PouchDB একে অপরের সাথে সিঙ্ক্রোনাইজ করার জন্য ডিজাইন করা হয়েছে। PouchDB ব্যবহারকারীকে offline মোডে ডেটা অ্যাক্সেস এবং আপডেট করার সুযোগ দেয় এবং যখন ইন্টারনেট কানেকশন পাওয়া যায়, তখন ডেটা CouchDB এর সাথে সিঙ্ক্রোনাইজ হয়।
প্রথমে, আপনাকে PouchDB ইনস্টল করতে হবে। যদি আপনি Node.js ব্যবহার করেন, তাহলে এটি npm এর মাধ্যমে ইনস্টল করতে পারবেন।
npm install pouchdb
এটি PouchDB ইনস্টল করবে এবং আপনি এটি ব্যবহার করতে পারবেন।
PouchDB ডাটাবেসে ডেটা offline এ সংরক্ষিত থাকে এবং যখন ইন্টারনেট কানেকশন পাওয়া যায় তখন এটি CouchDB এর সাথে সিঙ্ক্রোনাইজ হয়।
PouchDB ডাটাবেস তৈরি করার জন্য নিচের কোডটি ব্যবহার করতে পারেন:
// PouchDB ইনস্টল করুন
var PouchDB = require('pouchdb');
// PouchDB ডাটাবেস তৈরি করুন
var db = new PouchDB('my_database');
// ডকুমেন্ট ইনসার্ট করা
var doc = {
_id: 'user_1',
name: 'John Doe',
age: 30,
type: 'user'
};
db.put(doc).then(function(response) {
console.log('Document inserted successfully', response);
}).catch(function(err) {
console.log('Error inserting document', err);
});
এখানে:
PouchDB এবং CouchDB এর মধ্যে সিঙ্ক্রোনাইজেশন করার জন্য, আপনি sync() ফাংশন ব্যবহার করতে পারেন।
// CouchDB এর URL (আপনার CouchDB সার্ভারের URL)
var remoteDB = new PouchDB('http://localhost:5984/my_database');
// PouchDB এবং CouchDB এর মধ্যে সিঙ্ক্রোনাইজেশন
db.sync(remoteDB, {
live: true, // সিঙ্ক্রোনাইজেশন লাইভ হবে
retry: true // পুনরায় চেষ্টা করবে যদি সিঙ্ক্রোনাইজেশন ব্যর্থ হয়
}).on('change', function(change) {
console.log('Sync change', change);
}).on('error', function(err) {
console.log('Sync error', err);
});
এখানে:
CouchDB এবং PouchDB এর মধ্যে সিঙ্ক্রোনাইজেশনের দুটি মোড রয়েছে:
var remoteDB = new PouchDB('http://localhost:5984/my_database');
// Two-way sync
db.sync(remoteDB, {
live: true, // লাইভ সিঙ্ক্রোনাইজেশন
retry: true // পুনরায় চেষ্টা করবে
}).on('change', function(change) {
console.log('Sync change', change);
}).on('error', function(err) {
console.log('Sync error', err);
});
এই কোডের মাধ্যমে PouchDB এবং CouchDB এর মধ্যে two-way sync হবে, যা offline-first অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত উপযোগী।
আপনি যদি mobile application তৈরি করতে চান, তবে PouchDB এর Cordova বা React Native প্ল্যাটফর্ম ব্যবহার করতে পারেন।
আপনি যদি Apache Cordova ব্যবহার করে মোবাইল অ্যাপ তৈরি করতে চান, তাহলে PouchDB কিভাবে Cordova অ্যাপ্লিকেশনে ব্যবহার করবেন তা নিচে দেখানো হল।
cordova create myApp
cd myApp
cordova platform add android
cordova plugin add cordova-plugin-pouchdb
var PouchDB = require('pouchdb');
var db = new PouchDB('my_database');
// ডেটা ইনসার্ট করা
db.put({
_id: 'doc1',
name: 'Alice',
age: 25
}).then(function(response) {
console.log('Document inserted', response);
}).catch(function(err) {
console.log('Error inserting document', err);
});
এখানে:
PouchDB offline-first অ্যাপ্লিকেশন তৈরি করতে সহায়ক। আপনি PouchDB ব্যবহার করে মোবাইল বা ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন যেখানে ব্যবহারকারীরা offline অবস্থায়ও ডেটা দেখতে এবং আপডেট করতে পারবেন এবং পরে ইন্টারনেট কানেকশন ফিরে আসলে CouchDB এর সাথে সিঙ্ক্রোনাইজ করা যাবে।
var db = new PouchDB('my_database');
// ডেটা দেখুন বা আপডেট করুন যখন অ্যাপ অফলাইনে থাকে
db.put({
_id: 'doc1',
name: 'Bob',
age: 28
}).then(function(response) {
console.log('Document inserted in offline mode', response);
});
// সিঙ্ক্রোনাইজেশন হবে যখন ইন্টারনেট কানেকশন পাওয়া যাবে
var remoteDB = new PouchDB('http://localhost:5984/my_database');
db.sync(remoteDB, {
live: true,
retry: true
}).on('change', function(change) {
console.log('Syncing data...', change);
}).on('error', function(err) {
console.log('Sync error', err);
});
এখানে:
CouchDB এবং PouchDB দিয়ে offline-first মোবাইল অ্যাপ্লিকেশন তৈরি করা খুবই সহজ এবং কার্যকরী। PouchDB ব্যবহার করে আপনি মোবাইল অ্যাপ্লিকেশনগুলিতে ডেটা সিঙ্ক্রোনাইজ এবং CouchDB এর
সাথে যোগাযোগ করতে পারবেন। এই ফিচারটি real-time sync, offline data storage, এবং cross-platform synchronization এর জন্য উপযোগী। CouchDB এবং PouchDB এর ইন্টিগ্রেশন বিভিন্ন ধরনের অ্যাপ্লিকেশন ডেভেলপমেন্টে সহায়ক, যেমন mobile apps, web apps, এবং IoT ডিভাইসগুলির জন্য।
CouchDB একটি ডিস্ট্রিবিউটেড ডাটাবেস, যা Clustering সমর্থন করে। CouchDB Cluster Deployment এর মাধ্যমে আপনি একাধিক CouchDB নোডের মধ্যে ডেটা সিঙ্ক্রোনাইজ এবং ভারী লোড পরিচালনা করতে পারেন। CouchDB ক্লাস্টারটি অনেক সার্ভার বা নোডের মধ্যে ডেটা বিভক্ত করে এবং সিস্টেমের স্কেল এবং পারফরম্যান্স বাড়াতে সাহায্য করে। ক্লাস্টার ডেপ্লয়মেন্টটি সিস্টেমের high availability, fault tolerance, এবং data redundancy নিশ্চিত করে।
এখানে CouchDB Cluster Deployment কিভাবে করবেন এবং কি কি পদক্ষেপ অনুসরণ করতে হবে তা বিস্তারিতভাবে আলোচনা করা হয়েছে।
CouchDB ক্লাস্টার তৈরি করতে হলে, আপনাকে কিছু নোড বা সার্ভার সংযুক্ত করতে হবে এবং তাদের মধ্যে ডেটা সিঙ্ক্রোনাইজ করতে হবে। ক্লাস্টার গঠন করার মাধ্যমে ডেটাবেসের পারফরম্যান্স এবং অ্যাভেইলেবিলিটি বাড়ানো সম্ভব হয়।
CouchDB ক্লাস্টারের জন্য সাধারণত দুই ধরনের কম্পোনেন্ট থাকে:
CouchDB ক্লাস্টার ডেপ্লয়মেন্টের জন্য সাধারণত বেশ কিছু পদক্ষেপ অনুসরণ করতে হয়। এখানে আমরা 3 নোড সহ একটি ক্লাস্টার তৈরি করার উদাহরণ দেখবো।
প্রথমে, CouchDB ইনস্টল করতে হবে। আপনি Ubuntu, CentOS অথবা অন্য যে কোনো লিনাক্স সিস্টেমে CouchDB ইনস্টল করতে পারেন। এখানে Ubuntu তে ইনস্টলেশন দেখানো হয়েছে:
sudo apt-get update
sudo apt-get install couchdb
এটি CouchDB ইনস্টল করবে এবং single node সার্ভার শুরু করবে। এবার এটি সার্ভারের /etc/couchdb
কনফিগারেশন ফোল্ডারে প্রয়োজনীয় কনফিগারেশন ফাইল তৈরি করবে।
এখন, CouchDB Cluster তৈরি করতে হলে, প্রতিটি node কনফিগার করা প্রয়োজন। প্রতিটি নোডের জন্য আপনাকে couchdb.conf ফাইলে কিছু পরিবর্তন করতে হবে।
couchdb.conf ফাইলটি সাধারণত /etc/couchdb/couchdb.conf
অবস্থানে থাকে।
[couchdb]
bind_address = 0.0.0.0 # সমস্ত নেটওয়ার্ক থেকে সংযোগ গ্রহণ করার জন্য
"couchdb_cluster"
।[cluster]
name = couchdb_cluster
node
এবং port
কনফিগার করতে হবে। উদাহরণস্বরূপ:[node1]
hostname = couchdb_node1.example.com
port = 5984
[node2]
hostname = couchdb_node2.example.com
port = 5985
[node3]
hostname = couchdb_node3.example.com
port = 5986
এখন CouchDB Cluster তৈরির জন্য clustering কনফিগার করতে হবে। প্রথম নোডে couchdb
সার্ভার শুরু করুন এবং অন্য নোডগুলিকে ক্লাস্টারে যোগ করুন।
sudo systemctl start couchdb
node2
এবং node3
কে node1 ক্লাস্টারে যুক্ত করতে:curl -X POST http://localhost:5984/_cluster_setup \
-d '{"action": "add_node", "host": "couchdb_node1", "port": 5984, "username": "admin", "password": "password"}'
curl -X POST http://localhost:5985/_cluster_setup \
-d '{"action": "add_node", "host": "couchdb_node2", "port": 5985, "username": "admin", "password": "password"}'
এখানে, _cluster_setup
API ব্যবহার করে একে অপরের সাথে ক্লাস্টার করার জন্য নোডগুলোকে যুক্ত করা হয়।
এখন ক্লাস্টারে sharding সেটআপ করতে হবে। শার্ডিং হল ডেটাবেসের ডেটা একাধিক নোডে ভাগ করার প্রক্রিয়া। CouchDB ক্লাস্টারে স্বয়ংক্রিয়ভাবে ডেটা শার্ড হয়ে যাবে, তবে আপনি manual shard allocation করতে পারেন।
curl -X PUT http://localhost:5984/my_database
curl -X PUT http://localhost:5984/my_database/_shards \
-d '{"shards": 3, "replicas": 2}'
এটি 3 shards এবং 2 replicas কনফিগার করবে, অর্থাৎ 3 শার্ড তৈরি হবে এবং তাদের কপি 2টি থাকবে।
এখন, আপনি আপনার CouchDB Cluster সঠিকভাবে কনফিগার হয়েছে কিনা তা যাচাই করতে পারেন। _membership API ব্যবহার করে নোডগুলো চেক করা যাবে:
curl -X GET http://localhost:5984/_membership
এটি সমস্ত নোডের membership তথ্য দেখাবে, এবং আপনি যাচাই করতে পারবেন যে আপনার CouchDB Cluster সঠিকভাবে কাজ করছে কিনা।
CouchDB ক্লাস্টার পরিচালনা করার সময় monitoring অত্যন্ত গুরুত্বপূর্ণ। আপনি _stats এবং _membership API ব্যবহার করে ক্লাস্টারের স্বাস্থ্য পর্যবেক্ষণ করতে পারেন।
curl -X GET http://localhost:5984/_stats
curl -X GET http://localhost:5984/_membership
CouchDB Cluster Deployment ডিস্ট্রিবিউটেড ডেটাবেস ব্যবস্থাপনায় অনেক শক্তিশালী একটি সমাধান। Cluster তৈরি করে, আপনি high availability, fault tolerance, এবং data redundancy নিশ্চিত করতে পারেন। CouchDB তে node, sharding, এবং replication কনফিগারেশন একত্রে ব্যবহার করার মাধ্যমে আপনি ডেটাবেসের পারফরম্যান্স এবং স্কেলিং বাড়াতে পারবেন। এই পদ্ধতিতে একটি সহজভাবে, multi-node CouchDB cluster তৈরি করা সম্ভব, যেখানে প্রতিটি নোড একে অপরের সাথে সিঙ্ক্রোনাইজ থাকবে।
common.read_more